package net.uhuijia.appbase.service;

import java.util.List;

import net.uhuijia.appbase.model.BaseExample;
import net.uhuijia.appbase.model.BaseModel;

public interface BaseService<M extends BaseModel,E extends BaseExample> {
	 /**
     * 查询记录总数.
     * 
     * @param example
     * @return
     * @throws
     */
    public int count(E example);

    /**
     * 根据example查询列表数据.
     * 
     * @param example
     * @return
     * @throws
     */
    public List<M> list(E example);

    /**
     * 根据ID查询指定数据.
     * 
     * @param id
     * @return
     * @throws
     */
    public M get(String id);

    /**
     * 新增model数据.
     * 
     * @param model
     * @return
     * @throws
     */
    public String add(M model);

    /**
     * 根据ID更新指定数据.
     * 
     * @param model
     * @return
     * @throws
     */
    public String edit(M model);
    
    /**
     *  编辑信息，但是不更改数据的更新时间
     * @param model
     * @return
     * @throws
     */
    public String editAndNoUpdateTime(M model);

    /**
     * 根据ID删除指定数据.
     * 
     * @param model
     * @return
     * @throws
     */
    public String delete(M model);

    /**
     * 根据条件批量删除
     * 
     * @param model
     * @param example
     * @return
     * @throws Exception
     */
    public String deleteByExample(M model, E example);
}
